def estrutura_jogo(level):
	#!/usr/bin/env python
	# -*- coding: utf-8 -*-

	import pygame, os, sys, random
	from pygame.locals import *
	from Funcoes import *
	from Mapas import *
	from Niveis import *
	pygame.init()

	
	level = niveis[level]
	lista_original = level['lista']
	lista = lista_original[:]
	
	
	#### Audio ####
	carrega_musica(level, opcoes)

	som_tela = carrega_som('pong.wav')
	atualizar_volume_sons(som_tela)

	som_barra = carrega_som('barra.wav')
	atualizar_volume_sons(som_barra)

	som_tijolo = carrega_som('slide.wav')
	atualizar_volume_sons(som_tijolo)

	som_quebra = carrega_som('explosion.wav')
	atualizar_volume_sons(som_quebra)

	clock = pygame.time.Clock()
		 
		 
	##### Configuracao da Tela ####
	tela, fundo = config_tela(opcoes, tela, level)
	largura_tela, altura_tela = 800, 600


	#### Imagens ####
	tijolo = carrega_image("tijolo2.png").convert()
	imagem_barra = carrega_image("bouncer3.png").convert_alpha()
	imagem_bola = carrega_image("ball4.png").convert_alpha()


	#### Configuracao do Tijolo ####
	largura_tijolo, altura_tijolo = tijolo.get_size()
	tijolo_x, tijolo_y = (90, 100)


	#### Configuracao da Barra ####
	largura_barra, altura_barra = imagem_barra.get_size()
	barra_x, barra_y = (largura_tela/2 - largura_barra/2), (altura_tela - altura_barra * 6)


	#### Configuracao da Bola ####
	largura_bola, altura_bola = imagem_bola.get_size()
	bola_varia_x, bola_varia_y = level['velocidade_bola']
	bola_x, bola_y = 383, 433


	sorteados = {}
	for i in range(len(lista)/2):
		sorteados[random.randint(0,len(lista))] = 0


	pausado = False

	while True:
		for event in pygame.event.get():
			if event.type == QUIT: exit()
			if event.type == KEYDOWN:
				if event.key == K_p: #### Modo Pausa ####
					pausado = True
					if pausado:
						pausado = carrega_image('pausado.png')
						tela.blit(pausado,((largura_tela/3)+10,(altura_tela/3)+50))
						pygame.display.flip()
						while pausado:
							for event in pygame.event.get():
								if event.type == pygame.QUIT: sys.exit()
								
								if event.type == KEYDOWN:
									if event.key == K_ESCAPE:
										sys.exit()
									if event.key == K_p:
											pausado = False
				if event.key == K_ESCAPE:
						exit()
				if event.key == K_SPACE:
					if estado['morte']:
						bola_varia_x, bola_varia_y = level['velocidade_bola']
						estado['morte'] = False
						
	
		#### Game Over ####
		if estado['vidas'] == 0:
			estado['game_over'] = True
			
			arq = open('records.txt', "r") 
			arquivo = arq.read()
			arquivo = str(arquivo).split("|")
			arq.close()
			
			records = []
			for elemento in arquivo:
				records.append(int(elemento))
			
			records = sorted(records)
			records.reverse()

			if records[-1] < estado['score']:
				estado['novo_record'] = True
				records[-1] = estado['score']
			
			
			novo_conteudo = str(records[0])+"|"+str(records[1])+"|"+str(records[2])+"|"+str(records[3])+"|"+str(records[4])
			
			arq = open('records.txt', 'w')
			arq.write(novo_conteudo)
			arq.close()	
						
			gameover = carrega_image("gameover.jpg").convert()
			tela.blit(gameover, (0,0))
			blit_texto(15, 'Pressione Enter para voltar ao Menu', (255,255,255), (245,508), tela)
			if estado['novo_record']:
				blit_texto(30, "Novo Record: "+str(estado['score']), (255,255,255), (250,480), tela)
				estado['novo_record'] = False
			pygame.display.flip()
			
			while estado['game_over']:
				for event in pygame.event.get():
						if event.type == pygame.QUIT: sys.exit()
						if event.type == KEYDOWN:
							if event.key == K_ESCAPE:
								sys.exit()
							if event.key == pygame.K_KP_ENTER or event.key == pygame.K_RETURN:
								estado['game_over'] = False
								estado['vidas'] = 5
								estado['score'] = 0
								return False
		
		
		#### Verifica se nao tem mais tijolos ####						
		if lista == []: 
			#### Tela final - Fim do jogo ####
			if level['caption'] == "Brick by Brick - Level 4":
				press_tecla = False
				estado['morte'] = True
				theand = carrega_image("fimjogo.jpg").convert()
				tela.blit(theand, (0,0))
				blit_texto(15, 'Pressione Enter para voltar ao Menu', (255,255,255), (245,508), tela)
				pygame.display.flip()
				while press_tecla == False:
					for event in pygame.event.get():
						if event.type == pygame.QUIT:
							sys.exit()
						if event.type == pygame.KEYDOWN:
							if event.key == pygame.K_ESCAPE:
									sys.exit()
							if event.key == pygame.K_KP_ENTER or event.key == pygame.K_RETURN:
								return False
			else:
				estado['morte'] = True
				return True
		
		pressed_keys = pygame.key.get_pressed()

		
		#### Movimento da bola ####
		bola_x += bola_varia_x
		bola_y += bola_varia_y


		#### Movimento da barra ####
		if pressed_keys[K_LEFT] and barra_x > 0:
			barra_x -= level['velocidade_barra']
		if pressed_keys[K_RIGHT] and barra_x < 680:
			barra_x += level['velocidade_barra']
		if estado['morte']:
			bola_x, bola_y =  barra_x + (largura_barra/2 - largura_bola/2), barra_y - altura_bola/1.40
			
		
		#### Colisao - Tela ####
		if bola_x <= 0 or bola_x + largura_bola >= largura_tela:
			bola_varia_x = -bola_varia_x
			som_tela.play(0)
			
		if bola_y <= 0:
			bola_varia_y = -bola_varia_y
			som_tela.play(0)
				
		if bola_y <= barra_y:
			bola_varia_y = +bola_varia_y
			
		if bola_y + altura_bola >= 500: ##### Evento - Morte ####
			bola_varia_x, bola_varia_y = 0,0
			estado['morte'] = True
			estado['vidas'] -= 1


		#### Colisao - Barra ####
		if bola_y + altura_bola >= barra_y:
			if barra_x <= bola_x + largura_bola and bola_x <= barra_x + largura_barra:
				bola_varia_y = -bola_varia_y
				bola_y = bola_y - 5 # Tratamento da colisao lateral 
				if not estado['morte']:
					som_barra.play(0)
				
			elif barra_x <= bola_x + largura_bola <= barra_x + largura_barra:
				bola_varia_y = -bola_varia_y
				som_barra.play(0)
				
				
		#### Colisao - Tijolo ####
		bola_x1 = bola_x + largura_bola
		bola_y1 = bola_y + altura_bola
		
		for elemento in lista:
			i = elemento[1] # Posicao
			i2 = elemento[0] # Numero
			
			if i[1] <= bola_y1 <= i[3] and i[0] < bola_x < i[2]: # Colisao abaixo do tijolo
				bola_varia_y = -bola_varia_y
				bola_y += 10
				if i2 in sorteados.keys():
					sorteados[i2] += 1
					if sorteados[i2] == 3:
						lista.remove(elemento)
						som_quebra.play()
						estado['score'] += 15 + (random.randint(0,10))
				if i2 not in sorteados.keys():
					lista.remove(elemento)
					som_quebra.play()
					estado['score'] += 10
				break
			
			if i[1] <= bola_y <= i[3] and i[0] < bola_x < i[2]: # Colisao acima do tijolo
				bola_varia_y = -bola_varia_y
				bola_y -= 10
				if i2 in sorteados.keys():
					sorteados[i2] += 1
					if sorteados[i2] == 3:
						lista.remove(elemento)
						som_quebra.play()
						estado['score'] += 15 + (random.randint(0,10))
				if i2 not in sorteados.keys():
					lista.remove(elemento)
					som_quebra.play()
					estado['score'] += 10
				break
			
			if i[0] <= bola_x <= i[2] and i[1] < bola_y < i[3]: # Colisao a direita do tijolo
				bola_varia_x = -bola_varia_x
				bola_x += 10
				if i2 in sorteados.keys():
					sorteados[i2] += 1
					if sorteados[i2] == 3:
						lista.remove(elemento)
						som_quebra.play()
						estado['score'] += 15
				if i2 not in sorteados.keys():
					lista.remove(elemento)
					som_quebra.play()
					estado['score'] += 10
				break
			
			if i[0] <= bola_x1 <= i[2] and i[1] < bola_y < i[3]: # Colisao a esquerda do tijolo
				bola_varia_x = -bola_varia_x
				bola_x -= 10
				if i2 in sorteados.keys():
					sorteados[i2] += 1
					if sorteados[i2] == 3:
						lista.remove(elemento)
						som_quebra.play()
						estado['score'] += 15
				if i2 not in sorteados.keys():
					lista.remove(elemento)
					som_quebra.play()
					estado['score'] += 10
				break	

				
		tela.blit((fundo), (0,0))
		
		
		#### Blit - Vidas ####
		fonte = pygame.font.Font(('fonts' + os.sep + 'teste2.ttf'), 30)
		if level['caption'] == "Brick by Brick - Level 4":
			vidas = fonte.render('Vidas: '+str(estado['vidas']), True, (30,30,30))	
		else:
			vidas = fonte.render('Vidas: '+str(estado['vidas']), True, (255,255,0))	
		tela.blit(vidas, (300, 560))
		
		
		#### Blit - Score ####
		fonte = pygame.font.Font(('fonts' + os.sep + 'teste2.ttf'), 30)
		if level['caption'] == "Brick by Brick - Level 4":
			vidas = fonte.render('Score: '+str(estado['score']), True, (30, 30, 30))	
		else:
			vidas = fonte.render('Score: '+str(estado['score']), True, (255, 255, 0))	
		tela.blit(vidas, (450, 560))
		
				
		for elemento in lista:
			i = elemento[1]
			tela.blit(tijolo, (i[0],i[1]))

			
		tela.blit(imagem_bola, (bola_x, bola_y))
		tela.blit(imagem_barra, (barra_x, barra_y))

		clock.tick(80)
		
		pygame.display.update()
